package plannegocio.negocio;

import java.util.Collection;

import plannegocio.dao.CategoriaDAO;
import plannegocio.excepcion.DAOExcepcion;
import plannegocio.modelo.Categoria;

public class GestionCategoria {

	// CATEGORIAS

	public Categoria insertar_categoria(String descripcion) throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		Categoria vo = new Categoria();

		vo.setDescripcion(descripcion);

		try {
			vo = dao.insertar_categoria(vo);
		} catch (DAOExcepcion e) {
			throw new DAOExcepcion(e.getMessage());
		}

		return vo;
	}

	public Collection<Categoria> BuscarCategoria(String descripcion)
			throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		return dao.buscaCategoria(descripcion);
	}
	
	public Collection<Categoria> BuscarCategoriaId(int id)
			throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		return dao.buscaCategoriaId(id);
	}

	public Categoria ActualizarCategoria(int categoriaPlanId, String descripcion)
			throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();

		Categoria oCategoria = new Categoria();
		oCategoria.setCategoriaPlanID(categoriaPlanId);
		oCategoria.setDescripcion(descripcion);

		return dao.actualizarCategoria(oCategoria);

	}

	public Categoria AnularCategoria(int categoriaPlanId) throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();

		Categoria oCategoria = new Categoria();
		oCategoria.setCategoriaPlanID(categoriaPlanId);

		return dao.eliminarCategoria(oCategoria);

	}

	// SUBCATEGORIAS

	public Categoria insertar_subcategoria(String descripcion,
			int categoriaNivelId) throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		Categoria vo = new Categoria();

		vo.setDescripcion(descripcion);
		vo.setCategoriaNivelID(categoriaNivelId);

		try {
			vo = dao.insertar_subcategoria(vo);
		} catch (DAOExcepcion e) {
			throw new DAOExcepcion(e.getMessage());
		}

		return vo;
	}

	public Collection<Categoria> BuscarSubCategoria(String descripcion,
			int categoriaNivelId) throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		return dao.buscaSubCategoria(descripcion, categoriaNivelId);
	}
	
	public Collection<Categoria> BuscarSubCategoriaId(int id)
			throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();
		return dao.buscaSubCategoriaId(id);
	}

	public Categoria ActualizarSubCategoria(int categoriaPlanId,
			String descripcion) throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();

		Categoria oCategoria = new Categoria();
		oCategoria.setCategoriaPlanID(categoriaPlanId);
		oCategoria.setDescripcion(descripcion);

		return dao.actualizarSubCategoria(oCategoria);

	}

	public Categoria AnularSubCategoria(int categoriaPlanId)
			throws DAOExcepcion {
		CategoriaDAO dao = new CategoriaDAO();

		Categoria oCategoria = new Categoria();
		oCategoria.setCategoriaPlanID(categoriaPlanId);

		return dao.eliminarSubCategoria(oCategoria);

	}

}
